iT邦幫忙

2021 iThome 鐵人賽

DAY 5
0
Arm Platforms

ROS with Deep learning 開發與實戰系列 第 5

DAY 5 ROS 通訊架構

  • 分享至 

  • xImage
  •  

DAY 5 ROS 通訊架構1

前言

在前幾天我們將我們的 ROS 環境給搭建起來了,並且知道了大部分的架構,接下來就準備開始運行我們的程式碼,但在運行之前,我們必須要知道整個通訊架構。

一台機器人他有很多的部分都是需要控制的,像是下面這台 PR2 機器人

他有多個模塊是需要我們去進行控制的,像是以下這些模塊

Master 節點管理器

那我們該怎麼來控制這些模塊,來讓彼此能夠進行溝通呢? 首先我們要有一個 OP 管理員,來管理全部的程序 master(節點管理器),首先每一個 node 都需要跟 master 進行註冊(白名單),在註冊後才能運行,如果有多個 node 時,他們本身是互不認識的,但是透過 master,他們就可以互相溝通了,所以在 ROS 啟動時,我們便需要去把 master 給喚醒,輸入下面這個指令進行喚醒,在喚醒 master 的同時也會將 rosout、parameter server 給喚醒(召喚小怪),而 rosout 是負責將現在系統的資訊給輸出的 node, 看警告跟錯誤的地方便是這裡,並將這些訊息存在 log 中,而parameter server 就是進行一些參數配置的地方。

roscore

Node 節點

Node 是什麼呢? 你可以把它看成是一個程序,在之前我們有說過一個 package 可以有多個可執行文件,他們被讀取後便會成為一個個 node,我們在回來看剛剛 PR2 機器人的圖片,每一個模塊他都是一個 node , 而他的啟動方法是:

rosrun [package name] [node name]

還有一些指令可以用來輔助 node

列出當前運行的 node 訊息

rosnode list

顯示某個 node 的詳細訊息

rosnode info [node name]

結束某個 node

rosnode kill [node name]

測試連接節點

rosnode ping

列出某台機器上運行中的節點

rosnode machine

將沒有連接到的節點給砍了

rosnode cleanup 

roslaunch

這個時候你可能會有疑問,如果我一次要開一堆 node , 不就需要開好幾次嗎? 這時候我們可以用 roslaunch, 在昨天有講道說我們有一個 launch 文件, roslaunch 就是拿來輔助我們開啟 launch 文件 然後一次把 master 跟多個 node 一起啟動了:

roslaunch [package name] [launch file name]

我們來看一下 launch 他會長什麼樣子

<launch> <!--頭標籤-->
    <node> <!--需要啟動的node及其參數-->
    <include> <!--包含其他launch-->
    <machine> <!--指定運行的機器-->
    <env-loader> <!--設置環境變數-->
    <param> <!--定義參數到參數服務器-->
    <rosparam> <!--啟動yaml文件參數到參數服務器-->
    <arg> <!--定義變數-->
    <remap> <!--設定參數映射-->
    <group> <!--設定命名空間-->
</launch> <!--頭標籤-->

我們來看一下 PR2 機器人 有多少個節點吧~

在明天我們將要來說明 ROS 中最重要的一環 通訊方式

#Arm Arm Platforms


上一篇
Day 4 ROS文件系統
下一篇
DAY 6 ROS 通訊架構2
系列文
ROS with Deep learning 開發與實戰11
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言